iT邦幫忙

2024 iThome 鐵人賽

DAY 22
1

今日的行程:

讀書室:22:30 - 23:00

正片開始

今天的是 inline assembly,主要分為 basic 和 extended,extended inline assembly 可以帶參數,而參數形式可以用 %num 來表示也可以用 symbol name 來表示

Basic inline assembly

asm volatile ("ebreak"); 這樣不帶參數的 assembly,即是 basic inline assembly

Extended inline assembly

語法如下:

asm asm-qualifiers ( AssemblerTemplate 
                 : OutputOperands 
                 [ : InputOperands
                 [ : Clobbers ] ])

asm asm-qualifiers ( AssemblerTemplate 
                      : OutputOperands
                      : InputOperands
                      : Clobbers
                      : GotoLabels)    // qualifiers 要有 goto 
  • Output operands
  • Input operands
  • Clobbers
    • 'memory': 告訴 assembler 執行的 asm 會修改 memory 的數值,所以 assembler 不會對這段程式碼產生亂序的指令
    • 'cc': 這段程式碼會更改某些狀態暫存器
  • Operand Modifier
  • Constraints
    通常由 '=' 或 '+' 開頭,會有通用的 constraint 以及架構會有獨有的 constraints
    • RISC-V
    • ARM

總結

兩篇讚讚的繁體中文參考

一些 inline asm 的實際使用情形


上一篇
[鐵人賽] Day 21 ARM 第 9 章節 Linker & Linker Script
下一篇
[鐵人賽] Day 23 ARM 第 11 章節 Exception Handling
系列文
上班辦公室,下班讀書室:RISC-V / ARM64 體系結構編程與實踐30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言